package main

import (
	// "fmt"
	// "math/big"
)

func main() {
	// golang中定义字符，字符属于int类型
	// var a = 'a'
	// fmt.Printf("值:%v 类型:%T",a,a)
	// 当我们直接和输出byte字符 的时候输出的是这个字符对应的码值
	// 原样输出字符
	// var a ='a'
	// fmt.Printf("值:%c 类型:%T",a,a)
	// // 定义一个字符串输出字符串里面的字符
	// var str ="this"
	// fmt.Printf("值:%v 原样输出%c 类型:%T",str[2],str[2],str[2])  // 105

	// 一个汉字三个字节 一个字母一个字节

	// unsafe.Sizeof()
	// unsafe不能查看string所占存储空间
	// var str ="this" //占用4个字节
	// fmt.Println(len(str))

	// 	var str ="你好//" //占用3个字节
	// fmt.Println(len(str))
// golang中汉字用的是utf-8
	// 
	// var a ='国'
	// fmt.Printf("值:%v 类型:%T",a,a)

	// 6 通过循环输出字符串里面的字符
	// str :="golang"
	// for i:=0;i< len(str);i++{  //byte类型 uint类型 代表了AscII码的一个字符
	// 	fmt.Printf("%v(%c)",str[i],str[i])
	// }
	// rune类型 代表一个utf-8
	// range循环
	// s1 := "你好 golang"
	// // range迭代循环 key返回下标 value返回值
	// for k, v := range s1 {  //rune类型
	// 	fmt.Printf("%v(%c)%d\t",v,v,k)
	// }
	// 修改字符串
		// s1 :="big"
		// byteStr :=[]byte(s1)  //定义一个byte类型的数组切片
		// byteStr[0] ='p'  
		// 	// 把数组类型强制类型转换string
		// fmt.Printf(string(byteStr))
	
		// 如果字符串里有汉字
		// s1 :="你好 golang"
		// runeStr :=[]rune(s1)  //定义一个byte类型的数组切片
		// runeStr[0] ='大'  
		// 	// 把数组类型强制类型转换string
		// fmt.Printf(string(runeStr))

		// // rune可以处理中文


		
		
		

	

}